<?php

class Medico extends AppModel {
	
	var $belongsTo = array('CarteiraProfissional','Cidade');
	
	var $hasMany = array(
		'Agenda',
		'HistoricoAgendamento', 
		'ListanegraMedicopaciente', 
		'MedicoEspecialidade', 
		'MedicoConvenio',
		'MedicoHorario',
		'ListaEspera'
	);
	
	var $displayField = 'nome';
	
	var $actsAs = array('DateFormatter');

	var $validate = array(
        'nome' => array(
            'vazio' => array(
                'rule' => 'notEmpty',
                'required' => true,
                'message' => 'Nome deve ser informado!',
                'last' => true
			)
		),
        'nome_curto' => array(
            'vazio' => array(
                'rule' => 'notEmpty',
                'required' => true,
                'message' => 'Nome deve ser informado!',
                'last' => true
			)
		),		
		'cpf' => array(
			'validacao' => array(
				'rule' => 'validar_cpf',
				'required' => false,
				'message' => 'Cpf inválido!',
				'last' => true
			)
		)		
		
		
	);
	
	public function atende_convenio($medico_id, $convenio_id) {
		return ($this->MedicoConvenio->find('first', array('conditions' => array('medico_id' => $medico_id, 'convenio_id' => $convenio_id)))) ? true : false;
	}
	
	/*
	public function atende_paciente($medico_id, $paciente_id) {
		return ($this->ListanegraMedicopaciente->find('first', array('conditions' => array('medico_id' => $medico_id, 'paciente_id' => $paciente_id)))) ? false : true;
	}
	*/

	public function atende_primeira_vez($medico_id, $convenio_id, $paciente_id) {
		
		$atende_primeira_vez = $this->MedicoConvenio->get_atende_primeira_vez($medico_id, $convenio_id);
		
		if ($atende_primeira_vez == 'S') {
			$result = true;
		} else {
			$result = ($this->HistoricoAgendamento->find('first', array('conditions' => array('medico_id' => $medico_id, 'paciente_id' => $paciente_id, 'situacao' => array('4'))))) ? true : false;
			//$result = $this->HistoricoAgendamento->find('first', array('conditions' => array('medico_id' => $medico_id, 'paciente_id' => $paciente_id, 'situacao' => array('4'))));
		}
		
		return $result;
		
	}
	
	public function carregar_atende_outro_lugar() {
		return array('N' => 'Não', 'S' => 'Sim');
	}		
	
	public function carregar_celular1_fornecer() {
		return array('N' => 'Não', 'S' => 'Sim', 'R' => 'Com Restrições');
	}
	
	public function carregar_celular2_fornecer() {
		return array('N' => 'Não', 'S' => 'Sim', 'R' => 'Com Restrições');
	}	
	
	public function carregar_telefone_residencial_fornecer() {
		return array('N' => 'Não', 'S' => 'Sim', 'R' => 'Com Restrições');
	}
	
	public function convenio_paga_na_hora($medico_id, $convenio_id) {
		$medico_convenio_id = $this->MedicoConvenio->get_id($medico_id, $convenio_id);
		return $this->MedicoConvenio->get_paga_na_hora($medico_convenio_id);
	}
			
	public function get_nome($id) {
		return $this->field('nome', array('id' => $id));
	}
	
	public function get_nome_curto($id) {
		$nome_curto = $this->field('nome_curto', array('id' => $id));
		if (!$nome_curto)
			$nome_curto = $this->get_nome($id);
		return $nome_curto;
	}
	
	public function get_numero_encaixe($id) {
		return $this->field('numero_encaixe', array('id' => $id));
	}
	
	public function get_numero_extras($id) {
		return $this->field('numero_extras', array('id' => $id));
	}	
	
	public function get_observacoes_procedimento($medico_id, $convenio_id, $procedimento_id) {
		
		$medico_convenio_id = $this->MedicoConvenio->get_id($medico_id, $convenio_id);
		
		if (!$medico_convenio_id) {
			return null;
		}		
		
		return $this->MedicoConvenio->MedicoconvenioProcedimento->get_observacoes_procedimento($medico_convenio_id, $procedimento_id, $convenio_id);
	}	
	
	public function get_preco_procedimento($medico_id, $convenio_id, $procedimento_id) {
		
		$medico_convenio_id = $this->MedicoConvenio->get_id($medico_id, $convenio_id);
		
		if (!$medico_convenio_id) {
			return null;
		}		
		
		return $this->MedicoConvenio->MedicoconvenioProcedimento->get_preco_procedimento($medico_convenio_id, $convenio_id, $procedimento_id);
	}
	
	public function get_restricao($medico_id, $paciente_id) {
		return $this->ListanegraMedicopaciente->find('first', array('conditions' => array('medico_id' => $medico_id, 'paciente_id' => $paciente_id)));
	}	
	
	public function get_senha_telefone($id) {
		return $this->field('senha_telefone', array('id' => $id));
	}	
	
	public function realiza_procedimento($medico_id, $convenio_id, $procedimento_id) {
		
		$medico_convenio_id = $this->MedicoConvenio->get_id($medico_id, $convenio_id);
		
		if (!$medico_convenio_id) {
			return null;
		}
		
		return $this->MedicoConvenio->MedicoconvenioProcedimento->find('first', array('conditions' => array('medico_convenio_id' => $medico_convenio_id, 'procedimento_id' => $procedimento_id)));
	}	
	
	public function validar_cpf($obj) {
		if ($obj['cpf']) {
			App::import('Model','Validacao');
			$validacao = new Validacao();
			if (!$validacao->cpf($obj['cpf'])) {
				return false;
			}
		}
		return true;
	}
}